The need for fast and efficient vector-matrix computations arises in many applications. For example, vector-matrix computations are utilized in data-compression, digital data processing, neural networks, encryption and optimization, among others. Hardware techniques for optimizing these computations have included the use of ASICs, FPGAs, GPUs, and more recently, the design of a Dot-Product Engine based on a crossbar array.
In one example, the crossbar array is a memristive crossbar array having a number of row lines and a number of column lines intersecting the row lines to form a number of junctions, with memristive memory devices coupled at the junctions and programmed with resistance values. An input voltage signal along each row of the crossbar array is weighted by the conductance of the memristive devices in each column and accumulated as the current output from each column to form a dot product.
Inaccuracies while programming the memristive devices in the crossbar array and noise while reading the current output can affect the accuracy of the computations. Inaccuracies may also arise at the junctions if they become shorted, non-programmable or stuck at an open state.